#include "..\CookHeader.h"

int SIZE;
Array <string> queue;
int front = -1, rear = -1;

bool isQueueFull() {
	if (rear != SIZE - 1)
		return false;
	else if ((rear == SIZE - 1) && (front == -1))
		return true;
	else {
		for (int i = front + 1; i < SIZE; i++) {
			queue[i - 1] = queue[i];
			queue[i] = "None";
		}
		front--;
		rear--;
		return false;
	}
}

bool isQueueEmpty() {
	if (front == rear)
		return true;
	else
		return false;
}

void enQueue(string data) {
	if (isQueueFull()) {
		println("ť  áϴ.");
		return;
	}
	rear++;
	queue[rear] = data;
}

string deQueue() {
	if (isQueueEmpty()) {
		println("ť ϴ.");
		return "None";
	}
	front++;
	string data = queue[front];
	queue[front] = "None";
	return data;
}

string peek() {
	if (isQueueEmpty()) {
		println("ť ϴ.");
		return "None";
	}
	return queue[front + 1];
}

int main() {
	input(SIZE, "ť ũ⸦ Էϼ ==> ");
	for (int i = 0; i < SIZE; i++)
		queue.push_back("None");

	char select;
	input(select, "(I)/(E)/Ȯ(V)/(X)  ϳ  ==> ");

	string data;
	while (select != 'X' && select != 'x') {
		switch (select) {
		case 'I':
		case 'i':
			input(data, "Է --> ");
			enQueue(data);
			print("ť  : ");
			printArray(queue);
			break;
		case 'E':
		case 'e':
			data = deQueue();
			println(" -->" + data);
			print("ť  : ");
			printArray(queue);
			break;
		case 'V':
		case 'v':
			data = peek();
			println("   Ȯ-->" + data);
			printArray(queue);
			break;
		default:
			println("Է ߸");
		}
		input(select, "(I)/(E)/Ȯ(V)/(X)  ϳ  ==> ");
	}
	println("α׷ !");
}